/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package server;

import java.io.Serializable;
import java.util.ArrayList;
import javax.swing.ImageIcon;
import listas.ListaUsuariosRegistrados;

/**
 *Clase que encapsula el nombre del servidor, y los usuarios
 * registrados en el mismo.
 * @author HaNs
 * @version 1.1.1
 */
public class FileServer implements Serializable{
    private String nombre;
    private ListaUsuariosRegistrados usuarios;

    /**
     * Constructor de clase, que recibe como parametro el nombre 
     * con el que fue creado el servidor.
     * @param nombreServer 
     */
    public FileServer(String nombreServer) {
        nombre = nombreServer;
        usuarios = new ListaUsuariosRegistrados();
    }
    
    /**
     * Agrega al usuario nombreUser a la lista de 
     * usuarios activos del servidor.
     * @param nombreUser nombre del usuario a registrar
     */
    public void agregarUsuario(ServerUser nombreUser){
        usuarios.agregarUsuario(nombreUser);
    }
    
    /**
     * elimina al usuario nombreUser de los usuarios registrados en el servidor.
     * @param nombreUser 
     */
    public void eliminarUsuario(String nombreUser){
        usuarios.eliminarUsuario(nombreUser);
    }
    
    /**
     * Busca en el servidor si existe el usuario
     * nombreUser, en caso de que existe retorna true, 
     * de lo contrario retorna false.
     * @param nombreUser Nombre del usuario a buscar
     * @return true o false si encuentra o no al usuario.
     */
    public boolean existeUsuario(String nombreUser){
        return usuarios.existeUsuario(nombreUser);
    }
    
    /**
     * Devuelve la cantidad de usuarios 
     * registrados en este servidor.
     * @return int
     */
    public int cantidadUsuarios(){
        return usuarios.cantidadUsuarios();
    }
    
    /**
     * Retorna una lista con todos los usuarios registrados en el servidor.
     * @return 
     */
    public ArrayList<String> obtenerUsuariosRegistrados(){
        return usuarios.obtenerUsuarios();
    }
    
    /**
     * Obtiene la foto del usuario con el nombre pasado por parametro
     * desde la lista de los usuarios registrados
     * @param nameUser
     * @return 
     */
    public ImageIcon obtenerFotoUsuario(String nameUser){
        return usuarios.obtenerFotoUsuario(nameUser);
    }
    
    /**
     * Devuelve una descripcion de 
     * la clase, en formato String
     * @return 
     */
    @Override
    public String toString(){
        return nombre;        
    }
}
